Modem software development has its own terminology and, herein at the beginning, a tutorial in definitions as used herein may be helpful. An application is a software program used by an end user; examples of applications include a scheduling client program or application wherein a person may schedule employees' work days; a word processing application; a presentation application to prepare slides for a talk; a database application in which to manipulate data; a spreadsheet application, etc. A tool is a software application that enables a software developer to write additional applications. Examples of tools include: a remote-accessing tool; a database tool to access and manipulate remote relational database tables, columns and rows; a message queue tool to access and manipulate remote message queues; an import tool to select files on a remote system for importing into an ongoing software development project; a performance tool to access and configure remote performance; a tracing tool to trace execution of remote performance, a file tool to access folders and files in the file system of a remote system, etc. A component is software code that can be reused across multiple applications; in other words, a component is standard software that can be pulled off a server and incorporated into new applications using a tool by software developers. For example, a calendar component may be used in several applications such as a scheduling application, a presentation application, a data base application to calculate employee's vacation and pay, etc. Thus, a software developer uses tools to pull components from a local or remote server to create applications.
Software developers found it was first convenient and then necessary to have all code generation tools under one umbrella, called an integrated development environment (IDE). Integrated development environments, as the name suggests, give the software engineer an environment wherein the appropriate tools needed for source code editing, compiling, linking, testing, debugging, and profiling are seamlessly integrated. The advantage of using an integrated development environment is that the software developer need not be concerned about the tool interfaces when moving from one phase of code development to the other. Typically the integrated development environments track the phase of code generation and take appropriate actions of invoking the necessary tool.
Examples of a software development, analysis, and maintenance environments have been known for over twenty years, one of the first was Genera by Symbolics and LISP. For Unix programmers, FUSE is an integrated development environment that has tools that include editors, program builders, source code managers, debuggers, cross-referencers, call graph browsers, file comparison tools, main page hypertext viewers, search tools, performance profilers, heap analyzers, program visualizers, and an optional C++ class browser. Other examples are IBM's VisualAge products, VisualAge C++ and VisualAge for Java. VisualAge C++ provides an environment and toolset for multiplatform object oriented application development with class libraries and frameworks to build applications on AIX. VisualAge for Java is IBM's Java development environment to build Web-enabled enterprise applications with support for building and testing Java applets, servlets, and Enterprise JavaBeans. There are many other integrated development environments, but basically integrated development environments provide a complete capability for building, editing, compiling, dynamically and statically analyzing programs, configuring, source browsing, and debugging, etc.
Because there was a serious need in the industry for an open source integrated development environment that supported C and C++ in addition to Java, IBM and RedHat developed an integrated development environment called Eclipse to develop software in a myriad of computer languages. Eclipse runs not only on Linux but also other operating systems. There is some special interest in Linux because it is an open source operating system, meaning that it does not belong to a single one company, but is owned and developed by the public. The Eclipse integrated development environment is thus an open source environment for creating, integrating and deploying application development tools across a broad range of computing technology. Eclipse provides a common set of services and establishes the framework, infrastructure, and interactive workbench to build application software and related elements. Eclipse includes, inter alia, a source code editor with code browsing and navigation features like code assist, syntax based color highlighting and integrated help facilities that uses a graphical user interface.
Eclipse.org is an open consortium of software development tool vendors that collaborate to create development environments and product integration and share an interest in creating easy-to-use and interoperable products based upon plug-in technology. By collaborating and sharing core integration technology, tool vendors can concentrate on their areas of expertise and the creation of new development technology. Eclipse.org now includes members and founding steward companies: Borland, IBM, MERANT, QNX Software Systems, Rational Software, RedHat, SuSE, TogetherSoft and WebGain.
Although the Eclipse platform has built-in functionality, most of that functionality is very generic. Additional tools are necessary to extend the platform to work with new content types, to do new things with existing content types, and to focus the generic functionality on something specific. FIG. 1 is a simplified block diagram of the Eclipse integrated development environment. Eclipse is built on a mechanism for discovering, integrating, and running modules called plug-ins. The plug-in mechanism is used to partition Eclipse itself. Indeed, separate plug-ins provide the workspace, the workbench, and so on. When Eclipse is launched, the software developer is presented with an integrated development environment composed of the set of available plug-ins. Even the Eclipse platform runtime itself has its own plug-in. Because any plug-in is free to define new extension points and to provide new application program interfaces (APIs) for other plug-ins to use, a plug-in's extension points can be extended by other plug-ins. An extension point may declare additional specialized XML element types for use in the extensions. On start up, the Platform Runtime discovers the set of available plug-ins, reads their XML manifest files, and builds an in-memory plug-in registry. Eclipse matches extension declarations by name with their corresponding extension point declarations. The resulting plug-in registry is available via the Platform application program interface. A tool provider writes a tool as a separate plug-in that operates on files in the workspace and surfaces its tool-specific user interface in the workbench. The Eclipse Platform user interface is built around a workbench that provides the overall structure and presents an extensible user interface to the user. The workbench application program interface and implementation are built from two toolkits: the Standard Widget Toolkit (SWT) which is a widget set and graphics library integrated with the native window system but is independent of the operating system; and J Face which is a user interface toolkit that simplifies common user interface programming tasks. The entire Eclipse Platform user interface and the tools that plug into it use SWT for presenting information to the user. The team support component of Eclipse adds version and configuration management (VCM) capabilities to projects in the workspace and augments the workbench with views for presenting version and management concerns to the user. And, last but not least, there is the ubiquitous Help. The Eclipse Help mechanism allows tools to define and contribute documentation to one or more online books. For example, a tool usually contributes help style documentation in a user guide, and API documentation, if any, in a separate programmer guide. Eclipse thus takes care of all aspects of workbench window and perspective management. Editors and views are automatically instantiated as needed, and disposed of when no longer needed. The display labels and icons for actions contributed by a tool are listed in the plug-in manifest so that the workbench can create menus and tool bars without activating the contributing plug-ins.
There is a need within Eclipse and other integrated development environments to be able to access remote resources on an iSeries, Linux, Windows, and/or a Unix machine. A typical IDE such as Eclipse, moreover, provides support for editing and syntax highlighting of different programming languages for the user. For programmers, moreover, who develop programs for remote servers, there is a need to be able to edit files that may not exist locally on their machine. In a client/server environment, software developers need to edit source code in real-time wherein that code very often resides on remote machines. In other words, software developers want to open, edit, and save remote files as if those files existed on their local machine, without having to manually transfer files between their workstation and the server. There is an additional a need to provide remote edit support to files from many different platforms such as iSeries, Linux, Windows and Unix, and across different human languages and locations such as English, Chinese, Japanese, etc.